import 'package:flutter/material.dart';
import 'AddressList.dart';

class GetAddress extends StatefulWidget {
  @override
  _GetAddressState createState() => _GetAddressState();
}

class _GetAddressState extends State<GetAddress> {
  String _ads = '';

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text("获取收货地址"),
      ),
      body: Center(
        // 按钮组件，可以添加事件
        child: Column(
          // 纵向排列的组件
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            // 按钮组件，可以添加点击事件
            RaisedButton(
              child: Text("请点击"),
              onPressed: () async {

                // 官方推荐我们使用 async await 的写法处理异步请求
                // 使用Navigator跳转页面
                String str = await Navigator.of(context)
                    .push(MaterialPageRoute(builder: (BuildContext context) {
                  return AddressList();
                }));

                // 通过路由跳转从子页面传递过来的数据 都是异步请求
                print('~~~~~$str');
                // setState是 改变状态的函数，如果我们不把我们需要改变的状态值写在setState函数中，那么我们的页面不会重新渲染
                setState(() {
                 _ads = str; 
                });
              },

              /*
              路由跳转的固定写法，MaterialPageRoute是 西永提供给我们的路由组件，builder当中的返回值是我们要跳转的组件
              Navigator.of(context).push(MaterialPageRoute(
                  builder: (BuildContext context)=>AddressList()
              ))
              */

              // onPressed: (){
              //   // 类似JS 当中的 promise的写法，用.then 来处理异步操作             
              //   Navigator.of(context).push(MaterialPageRoute(
              //     builder: (BuildContext context)=>AddressList()
              //   )).then((res){
              //     setState(() {
              //      _ads = res; 
              //     });
              //   });
              // },


            ),

            Text("${_ads==''?'未查到收货地址':_ads}"),

          ],
        ),
      ),
    );
  }
}
